fn main() {
    let s1 = String::from("slice test");
    let s2 = first_world(&s1);
    println!("{s2}");
    let s2 = first_world(&s1[3..]);
    println!("{s2}");
}

// s 引用,无所有权
// 参数由 &String 换成 &str 更灵活
fn first_world(s: &str) -> &str {
    // 返回带所有权的 str
    let bytes = s.as_bytes();
    for (i, &item) in bytes.iter().enumerate() {
        if item == b' ' {
            // 遇到空格返回
            return &s[..i];
        }
    }
    &s[..] // =s[0..len]  ..用法与go的 : 相同
}
